package com.exam.student.service;

import com.exam.entity.*;
import com.exam.entity.dto.ForgotDto;
import com.exam.entity.dto.RegisterDto;
import com.exam.entity.vo.MessageVo;
import com.exam.entity.vo.ReplayVo;

public interface LoginService {

    /**
     * 登录操作
     *
     * @param login
     * @return
     */
    ApiResult login(Login login);

    /**
     * 试卷列表分页
     * @param pageNum
     * @param pageSize
     * @return
     */
    ApiResult examSelectPage(Integer pageNum, Integer pageSize);

    /**
     * 关键字搜索
     * @param examManage
     * @return
     */
    ApiResult findBySource(ExamManage examManage);

    /**
     * 查询详细试卷
     * @param paperId
     * @return
     */
    ApiResult findQuestion(Long paperId);

    /**
     * 将学生的分数插入进去
     * @param score
     * @return
     */
    ApiResult insertScore(Score score);

    /**
     * 查询我的分数
     * @param page
     * @param size
     * @param examCode
     * @return
     */
    ApiResult findMyScore(Integer page, Integer size, Long examCode);

    /**
     * 留言消息分页
     * @param page
     * @param size
     * @return
     */
    ApiResult findAllMessage(Integer page, Integer size);

    /**
     * 插入留言消息
     * @param messageVo
     * @return
     */
    ApiResult insertMessage(MessageVo messageVo);

    /**
     * 插入评论消息
     * @param replayVo
     * @return
     */
    ApiResult insertReplay(ReplayVo replayVo);

    /**
     * 删除评论消息
     * @param replayVo
     * @return
     */
    ApiResult replayDelete(ReplayVo replayVo);

    /**
     * 删除留言消息
     * @param messageVo
     * @return
     */
    ApiResult deleteMessage(MessageVo messageVo);

    /**
     * 学生修改密码
     * @param updatePwdDto
     * @return
     */
    ApiResult updatePwdDto(RegisterDto updatePwdDto);

    /**
     * 注册操作
     * @param registerDto
     * @return
     */
    ApiResult register(RegisterDto registerDto);

    /**
     * 找回密码
     * @param forgotDto
     * @return
     */
    ApiResult forgotPwd(ForgotDto forgotDto);

    /**
     * 将头像存储在DB
     * @param avatar
     * @return
     */
    ApiResult insertAvatar(Avatar avatar);

    /**
     * 进入页面根据id查找头像信息
     * @param userId
     * @return
     */
    ApiResult findByIdAvatars(Long userId);

    /**
     * 删除oss里面图片
     * @param filePath
     * @return
     */
    ApiResult deleteAvatar(String filePath);

    /**
     * 退出登录
     * @param exitForm
     * @return
     */
    ApiResult exit(ExitForm exitForm);

    /**
     * 登录信息写到缓存
     * @param userId
     * @return
     */
    ApiResult findByIdLiveCount(Long userId);
}
